class Solution {
    public ListNode removeElements(ListNode head, int val) {
        if(head==null)
            return null;
        if(head.val==val&&head.next==null)//第一个数相等，链表只有一个数，返回空
            return null;
        if(head.val!=val&&head.next==null)//第一个数不相等，但是链表中只有一个数，返回头结点
                return head;
                ListNode cur=null;
        while(head!=null)
        {
            if(head.val==val)//第一个数相等，但是链表不止一个数，头节点指向下一个节点
            {
               
                head=head.next;
            }
             else {
                 cur=head;
                 break;
        }
        }
        //if(head.val!=val&&head.next!=null)//第一个数不相等，链表中有多个数
        
        while(cur!=null)
        {
            if(cur.next!=null&&cur.next.val==val)
               cur.next=cur.next.next;
            else 
               cur=cur.next;
        }
         return head;
    }
}